import { instance } from "../axios";

/**
 * 用户登录
 * @param {Object} credentials - 登录凭证
 * @param {string} credentials.username - 用户名
 * @param {string} credentials.password - 密码
 * @returns {Promise} - 返回登录结果
 */
export const login = (credentials) => {
  return instance.post('/auth/login', credentials);
};

/**
 * 获取登录表单
 * @returns {Promise} - 返回登录表单
 */
export const getLoginForm = () => {
  return instance.get('/auth/login');
};

/**
 * 发送注册验证码
 * @param {string} email - 邮箱
 * @returns {Promise} - 返回发送结果
 */
export const sendVerificationCode = (email) => {
  return instance.post('/auth/register_code', { email });
};

/**
 * 获取注册表单
 * @returns {Promise} - 返回注册表单
 */
export const getRegisterForm = () => {
  return instance.get('/auth/register');
};

/**
 * 用户注册
 * @param {Object} userData - 用户数据
 * @param {string} userData.username - 用户名
 * @param {string} userData.password - 密码
 * @param {string} userData.email - 邮箱
 * @param {string} userData.role - 角色，默认为 USER
 * @param {string} code - 验证码
 * @param {string} inviteCode - 邀请码
 * @returns {Promise} - 返回注册结果
 */
export const register = (userData, code, inviteCode) => {
  return instance.post(`/auth/register?code=${encodeURIComponent(code)}&inviteCode=${encodeURIComponent(inviteCode)}`, userData);
};

/**
 * 初始化管理员账户
 * @param {Object} adminData - 管理员数据
 * @param {string} code - 验证码
 * @returns {Promise} - 返回初始化结果
 */
export const initAdminAccount = (adminData, code) => {
  return instance.post(`/auth/register-admin-init?code=${encodeURIComponent(code)}`, adminData);
};

/**
 * 注册管理员账户
 * @param {Object} adminData - 管理员数据
 * @param {string} code - 验证码
 * @returns {Promise} - 返回注册结果
 */
export const registerAdmin = (adminData, code) => {
  return instance.post(`/auth/register-admin?code=${encodeURIComponent(code)}`, adminData);
};

/**
 * 获取首页
 * @returns {Promise} - 返回首页内容
 */
export const getHome = () => {
  return instance.get('/auth/home');
};

/**
 * 忘记密码
 * @param {string} email - 邮箱
 * @returns {Promise} - 返回处理结果
 */
export const forgotPassword = (email) => {
  return instance.post('/auth/forgot-password', { email });
};

/**
 * 验证重置密码令牌
 * @param {string} token - 重置密码令牌
 * @returns {Promise} - 返回验证结果
 */
export const validateResetToken = (token) => {
  return instance.get(`/auth/validate-reset-token?token=${encodeURIComponent(token)}`);
};

/**
 * 重置密码
 * @param {string} token - 重置密码令牌
 * @param {string} newPassword - 新密码
 * @returns {Promise} - 返回重置结果
 */
export const resetPassword = (token, newPassword) => {
  return instance.post(`/auth/reset-password?token=${encodeURIComponent(token)}`, { newPassword });
};

/**
 * 获取用户信息
 * @param {string} token - 用户令牌
 * @returns {Promise} - 返回用户信息
 */
export const getUserInfo = (token) => {
  return instance.get(`/auth/user/${token}`);
};

/**
 * 修改密码
 * @param {string} email - 邮箱
 * @param {string} code - 验证码
 * @param {string} oldPassword - 旧密码
 * @param {string} newPassword - 新密码
 * @returns {Promise} - 返回修改结果
 */
export const changePassword = (email, code, oldPassword, newPassword) => {
  // 使用URLSearchParams格式发送请求参数
  const params = new URLSearchParams();
  params.append('email', email);
  params.append('code', code || '');
  params.append('oldPassword', oldPassword);
  params.append('newPassword', newPassword);

  return instance.post('/usercenter/new-password', params, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });
};

/**
 * 发送密码找回验证码
 * @param {string} email - 邮箱
 * @returns {Promise} - 返回发送结果
 */
export const sendPasswordResetCode = (email) => {
  // 使用URLSearchParams格式发送请求参数
  const params = new URLSearchParams();
  params.append('email', email);

  return instance.post('/usercenter/password-forgot-code', params, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });
};

/**
 * 生成邀请码
 * @returns {Promise} - 返回邀请码
 */
export const generateInviteCode = () => {
  return instance.post('/usercenter/generate-invite-code');
};

/**
 * 获取我的邀请码
 * @param {string} type - 邀请码类型
 * @returns {Promise} - 返回邀请码列表
 */
export const getMyInviteCodes = (type) => {
  return instance.get('/usercenter/my-invite-codes', { params: { type } });
};

/**
 * 签到
 * @returns {Promise} - 返回签到结果
 */
export const checkIn = () => {
  return instance.post('/usercenter/checkin');
};

/**
 * 获取签到状态
 * @returns {Promise} - 返回签到状态
 */
export const getCheckInStatus = () => {
  return instance.get('/usercenter/checkin/status');
};

/**
 * 获取账户余额
 * @returns {Promise} - 返回账户余额
 */
export const getBalance = () => {
  return instance.get('/usercenter/balance');
}; 